//题目链接：https://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42?tpId=230&tqId=38961&ru=/exam/oj
#include <iostream>
using namespace std;
//差分：差分数组i位置的前缀和是原数组第i位的元素
//差分是前缀和的逆运算
//在前缀和中，原数组是前缀和数组的差分数组
const int N = 1e5 + 10;
long long a[N],s[N];
int n , m;
int main() {
    scanf("%d%d",&n,&m);
    for(int i = 1 ; i <= n ; ++i)
    {
        scanf("%lld",&a[i]);
        s[i] += a[i];
        s[i+1] -= a[i];//构建差分数组
    }

    while(m--)
    {
        int l,r,k;
        scanf("%d%d%d",&l,&r,&k);
        s[l] += k , s[r+1] -= k;
    }
    for(int i = 1 ; i <= n ; ++i)
    {
        s[i] += s[i-1];
        printf("%lld ",s[i]);
    }
    return 0;
}
// 64 位输出请用 printf("%lld")